Algorithm + Strategy = Parallelism 1 Writing Parallel Programs

نویسنده

  • P. W. TRINDER
چکیده

The process of writing large parallel programs is complicated by the need to specify both the parallel behaviour of the program and the algorithm that is to be used to compute its result. This paper introduces evaluation strategies, lazy higher-order functions that control the parallel evaluation of non-strict functional languages. Using evaluation strategies, it is possible to achieve a clean separation between algorithmic and behavioural code. The result is enhanced clarity and shorter parallel programs. Evaluation strategies are a very general concept: this paper shows how they can be used to model a wide range of commonly used programming paradigms, including divide-and-conquer, pipeline parallelism, producer/consumer parallelism, and data-oriented par-allelism. Because they are based on unrestricted higher-order functions, they can also capture irregular parallel structures. Evaluation strategies are not just of theoretical interest: they have evolved out of our experience in parallelising several large-scale parallel applications, where they have proved invaluable in helping to manage the complexities of parallel behaviour. Some of these applications are described in detail here. The largest application we have studied to date, Lolita, is a 60,000 line natural language engineering system. Initial results show that for these programs we can achieve acceptable parallel performance, for relatively little programming eeort. While it is hard to write good sequential programs, it can be considerably harder to write good parallel ones. At Glasgow we have worked on several fairly large parallel programming projects and have slowly, and sometimes painfully, developed a methodology for parallelising sequential programs. The essence of the problem facing the parallel programmer is that, in addition to specifying what value the program should compute, explicitly parallel programs y

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

Algorithm + Strategy = Parallelism

The process of writing large parallel programs is complicated by the need to specify both the parallel behaviour of the program and the algorithm that is to be used to compute its result This paper introduces evaluation strategies lazy higher order functions that control the parallel evaluation of non strict functional languages Using evaluation strategies it is possible to achieve a clean sepa...

متن کامل

Hints based Speculative Execution for Exploiting Probabilistic Parallelism

Performance growth of processors will depend on the amount of parallelism exposed by software; at the same time, many algorithms are inherently sequential: they have dependencies that prevent parallelism from being automatically exploited. In this paper we describe a new type of parallelism called probabilistic parallelism that can be unlocked in inherently sequential programs using speculative...

متن کامل

Exploiting Parallelism in Functional Languages : a \paradigm-oriented" Approach

Deriving parallelism automatically from functional programs is simple in theory but very few practical implementations have been realised. Programs may contain too little or too much parallelism causing a degradation in performance. Such parallelism could be more eeciently controlled if parallel algorithmic structures (or skeletons) are used in the design of algorithms. A structure captures the...

متن کامل

Two Computer Systems Paradoxes: Serialize-to-parallelize, and Queuing Concurrent-writes

We present and examine the following Serialize-to-Parallelize Paradox: suppose a programmer has a parallel algorithm in mind; the programmer must serialize the algorithm , and is actually trained to suppress its parallelism, while writing code; later, however, compilation and runtime techniques are used to reverse the results of this seri-alization eeort and extract as much parallelism as possi...

متن کامل

Extracting and Implementing List Homomorphisms in Parallel Program Development

Homomorphisms are functions that match the divide-and-conquer pattern and are widely used in parallel programming. Two problems are studied for homomorphisms on lists: (1) parallelism extraction: nding a homo-morphic representation of a given function; (2) parallelism implementation: deriving an eecient parallel program that computes the function. The proposed approach to parallelism extraction...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

عنوان ژورنال:

دوره   شماره 

صفحات  -

تاریخ انتشار 1993